In recent years, the capacity of storage devices increases rapidly, and hence the loss suffered when a storage fails becomes larger and larger. Thus, one technique conventionally used to prevent such a data loss and increase processing performance is through the use of RAID (Redundant Array of Inexpensive Disks). Also, in recent years, the capacity increase and the price reduction of semiconductor storage devices progress rapidly to allow their use in RAID devices, which typically used hard disks (HDDs; Hard Disk Drives) in the past. As such a semiconductor disk device, there is an SSD (Solid State Device). The SSD is a storage device which uses a flash memory and has features such as high-speed, low power consumption, small size/light weight, and impact resistant.
In general, when writing data to a semiconductor disk device, an error correction code (ECC) is added to the data. When reading the data, error detection processing and correction processing using the ECC are performed. As a data range in which the ECC is calculated, a value unique to each model of the semiconductor disk device products is set. For example, appropriate ranges are set, such as, a range is set for every one block which is a management unit of the data area in an SSD, or a range is set for every two or every four blocks by dividing continuous blocks into small groups of blocks. There is a semiconductor disk device in which a unit amount of data transferred from a buffer memory is further divided into a plurality of banks and an ECC is set for each bank. Japanese Laid-open Patent Publication No. 10-207726 may relate the above art. Hereinafter, the type of the product is referred to as “model”. For example, the model may be identified by a model name or a model number set on the product.
When a medium error is detected by an error detection code such as the ECC, in a RAID device, a storage control device restores data in a storage in which the error is detected by using data of another storage having a redundant configuration.
A problem with conventional storage devices such as those described above is that a recovery range needs to be set in advance in corresponding storage control devices.
In data restoration processing (hereinafter referred to as “recovery processing”) in a RAID device, the processing is performed on the recovery area, which is an entire area covered by an error detection code and including the data area in which the medium error occurs. For example, when the error detection code is generated for every two blocks, the recovery range is two blocks which is covered by the error detection code and includes the area in which the medium error occurs. Also, the recovery processing for two blocks is required. Therefore, the recovery range needs to be registered in advance in the storage control device which controls the recovery processing.
In particular, in a semiconductor disk device, a recovery range unique to each model is set, and it is difficult to change the recovery range after the recovery range is set. Therefore, when a semiconductor disk device is included in a RAID configuration, an operation is required in which the specification of the model of the semiconductor disk device is studied and the recovery range unique to the model is registered in advance. Furthermore, when a new model is added or a model is replaced, it is necessary to change registration information related to the recovery ranges. However, the operation to change the recovery ranges every time a model is changed or a model is added is very troublesome. In addition, since the operation is a manual operation, a registration error and a registration failure may occur. In such a case, there is a risk that a malfunction of the storage device occurs. It is not limited to semiconductor disk devices, and the same problem may occur when a unique error code is added to data stored in a storage.